package com.atqh.srrt.chicken.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;

import javax.websocket.HandshakeResponse;
import javax.websocket.server.HandshakeRequest;
import javax.websocket.server.ServerEndpointConfig;
import java.util.List;
import java.util.Map;

@Slf4j
@Configuration
public class WebsocketConfig  extends ServerEndpointConfig.Configurator{


    /**
     * 重写modifyHandshake方法,获取Sec-WebSocket-Protocol请求头
     * @param sec
     * @param request
     * @param response
     */
    @Override
    public void modifyHandshake(ServerEndpointConfig sec, HandshakeRequest request, HandshakeResponse response) {

        // 这个userProperties 可以通过 session.getUserProperties()获取
        final Map<String, Object> userProperties = sec.getUserProperties();

        List<String> tokens = request.getHeaders().get("Sec-WebSocket-Protocol");
        String token = tokens.get(0);
        System.out.println(token);
//        validateToken(token);
//        SysUser sysUser = loginService.checkToken(token);
        userProperties.put("token",token );
        //当Sec-WebSocket-Protocol请求头不为空时,需要返回给前端相同的响应
        response.getHeaders().put("Sec-WebSocket-Protocol", request.getHeaders().get("Sec-WebSocket-Protocol"));
        super.modifyHandshake(sec, request, response);
    }


//    @Autowired无法注入
//    private boolean validateToken(String token) {
//        // 验证JWT token的逻辑
//        try {
//
//            SysUser sysUser = loginService.checkToken(token);
//            if(sysUser!=null){
//                log.info("WebSocket户为{}",sysUser);
//                //  将登陆用户添加到本地线程池
//                UserThreadLocal.put(sysUser);
//                log.info("登录的用户为{}",
//                        UserThreadLocal.get());
//                // 在这里进行其它验证逻辑，如验证过期时间、用户权限等
//                return true; // 返回true表示token验证通过
//            }else return false;
//
//
//        } catch (Exception e) {
//            return false; // 返回false表示token验证失败
//        }
//    }
}
